package com.bys.service;

import com.bys.factory.PayFactory;
import com.bys.service.impl.PayServiceImpl;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

/**
 *@FeignClient: 用于标记当前接口是一个 Feign 的声明式服务接口，spring会为这个接口生成动态代理对象
 * 属性 name: 用于指定注册中心中某个服务的名字
 * fallback 指定一个自定义的异常熔断器类，当使用声明式接口中的方法调用远程服务，如果出现了异常
 *  则自动执行 fallback 所指定的这个类的对应的方法来执行服务的降级
 *  方法可以实现成员服务异常，异常后进行服务的熔断，但是不能获取到远程服务的异常信息，如果要获取远程服务的异常信息，可以使用 fallbackFactory;
 *  fallbackFactory: 指定一个自定义的异常熔断器类，这个熔断器可以获取异常信息
 */
//@FeignClient(name = "EDU-HYSTRIX-FEIGN-PROVIDER",fallback = PayServiceImpl.class)
    @FeignClient(name = "EDU-HYSTRIX-FEIGN-PROVIDER",fallbackFactory = PayFactory.class)
public interface PayService {
    @GetMapping("/feign/ok")
    String feignOk();
    @GetMapping("/feign/timeout")
    String feign_timeout();
    @GetMapping("/feign/err")
    String feign_err();
}
